package site.jlopen.kuscia.rpc;

import java.util.Iterator;

import org.secretflow.v1alpha1.kusciaapi.Job;
import org.secretflow.v1alpha1.kusciaapi.Job.ApproveJobRequest;
import org.secretflow.v1alpha1.kusciaapi.Job.ApproveJobResponse;
import org.secretflow.v1alpha1.kusciaapi.Job.BatchQueryJobStatusRequest;
import org.secretflow.v1alpha1.kusciaapi.Job.BatchQueryJobStatusResponse;
import org.secretflow.v1alpha1.kusciaapi.Job.CreateJobRequest;
import org.secretflow.v1alpha1.kusciaapi.Job.CreateJobResponse;
import org.secretflow.v1alpha1.kusciaapi.Job.DeleteJobRequest;
import org.secretflow.v1alpha1.kusciaapi.Job.DeleteJobResponse;
import org.secretflow.v1alpha1.kusciaapi.Job.QueryJobRequest;
import org.secretflow.v1alpha1.kusciaapi.Job.QueryJobResponse;
import org.secretflow.v1alpha1.kusciaapi.Job.RestartJobRequest;
import org.secretflow.v1alpha1.kusciaapi.Job.RestartJobResponse;
import org.secretflow.v1alpha1.kusciaapi.Job.StopJobRequest;
import org.secretflow.v1alpha1.kusciaapi.Job.StopJobResponse;
import org.secretflow.v1alpha1.kusciaapi.Job.WatchJobRequest;

/**
* @ClassName: KusciaJobRpc
* @Description: 在 Kuscia 中，你可以使用 KusciaJob 来表示一个任务流程
* @author ChenJiaLu
* @date 2024年7月13日 下午2:56:28
 */
public interface KusciaJobRpc extends KusciaRpc {

	/**
	* <strong>创建 Job</strong>
	* @author ChenJiaLu
	* @date 2024年7月13日 下午2:57:01
	 */
	public CreateJobResponse createJob(CreateJobRequest request);

	/**
	* <strong>查询 Job</strong>
	* @author ChenJiaLu
	* @date 2024年7月13日 下午2:57:01
	 */
	public QueryJobResponse queryJob(QueryJobRequest request);

	/**
	* <strong>批量查询 Job 状态</strong>
	* @author ChenJiaLu
	* @date 2024年7月13日 下午2:57:01
	 */
	public BatchQueryJobStatusResponse batchQueryJobStatus(BatchQueryJobStatusRequest request);

	/**
	* <strong>删除 Job</strong>
	* @author ChenJiaLu
	* @date 2024年7月13日 下午2:57:01
	 */
	public DeleteJobResponse deleteJob(DeleteJobRequest request);

	/**
	* <strong>停止 Job</strong>
	* @author ChenJiaLu
	* @date 2024年7月13日 下午2:57:01
	 */
	public StopJobResponse stopJob(StopJobRequest request);

	/**
	* <strong>监听 Job</strong>
	* @author ChenJiaLu
	* @date 2024年7月13日 下午2:57:01
	 */
	public Iterator<Job.WatchJobEventResponse> watchJob(WatchJobRequest request);

	/**
	* <strong>审批 Job</strong>
	* @author ChenJiaLu
	* @date 2024年7月13日 下午2:57:01
	 */
	public ApproveJobResponse approveJob(ApproveJobRequest request);

	/**
	* <strong>暂停 Job</strong>
	* @author ChenJiaLu
	* @date 2024年7月13日 下午2:57:01
	 */
	//public SuspendJobResponse SuspendJob(SuspendJobRequest request);

	/**
	* <strong>重跑 Job</strong>
	* @author ChenJiaLu
	* @date 2024年7月13日 下午2:57:01
	 */
	public RestartJobResponse RestartJob(RestartJobRequest request);

	/**
	* <strong>取消 Job</strong>
	* @author ChenJiaLu
	* @date 2024年7月13日 下午2:57:01
	 */
	//public CancelJobResponse CancelJob(CancelJobRequest request);
}
